package com.eshop;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.po.LikeTable;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

public class CodeGenerator {
    public static void main(String[] args) {
// 使用 FastAutoGenerator 快速配置代码生成器
        FastAutoGenerator fa = FastAutoGenerator.create("jdbc:mysql://localhost:3306/eshop?serverTimezone=GMT%2B8", "rhj", "rhj");
        //  生成用户中心表
        fa.globalConfig(builder -> {
                    builder.author("raohj")
                            .disableOpenDir()
                            .outputDir("EShopBase\\src\\main\\java"); // 输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.eshop.base") // 设置父包名
                            .entity("model") // 设置实体类包名
                            .mapper("dao") // 设置 Mapper 接口包名
                            .service("service") // 设置 Service 接口包名
                            .serviceImpl("service.impl") // 设置 Service 实现类包名
                            .xml("mappers"); // 设置 Mapper XML 文件包名
                })
                .strategyConfig(builder -> {
//                    builder.likeTable(new LikeTable("user")) // 模糊匹配表名
                    builder.addInclude("user", "order") // 精确表名
                            .entityBuilder()
                            .enableChainModel()
                            .enableLombok() // 启用 Lombok
                            .enableTableFieldAnnotation() // 启用字段注解
                            .controllerBuilder()
                            .enableRestStyle(); // 启用 REST 风格
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
                .execute(); // 执行生成
    }
}
